%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ts=4 sw=4 ft=erlang et

{deps, [{erlware_commons,     "1.3.1"},
        {ssl_verify_fun,      "1.1.3"},
        {certifi,             "2.3.1"},
        {parse_trans,         "3.3.0"}, % force otp-21 compat
        {providers,           "1.7.0"},
        {getopt,              "1.0.1"},
        {bbmustache,          "1.6.0"},
        {relx,                "3.28.0"},
        {cf,                  "0.2.2"},
        {cth_readable,        "1.4.2"},
        {hex_core,            "0.4.0"},
        {eunit_formatters,    "0.5.0"}]}.

{post_hooks, [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)",
               escriptize,
               "cp \"$REBAR_BUILD_DIR/bin/rebar3\" ./rebar3"},
              {"win32",
               escriptize,
               "robocopy \"%REBAR_BUILD_DIR%/bin/\" ./ rebar3* "
               "/njs /njh /nfl /ndl & exit /b 0"} % silence things
             ]}.

{escript_name, rebar3}.
{escript_emu_args, "%%! +sbtu +A1\n"}.
%% escript_incl_extra is for internal rebar-private use only.
%% Do not use outside rebar. Config interface is not stable.
{escript_incl_extra, [{"relx/priv/templates/*", "_build/default/lib/"},
                      {"rebar/priv/templates/*", "_build/default/lib/"}]}.

{erl_opts, [{platform_define, "^[0-9]+", namespaced_types},
            {platform_define, "^(19|2)", rand_only},
            {platform_define, "^2", unicode_str},
            {platform_define, "^(2[1-9])|(20\\\\.3)", filelib_find_source},
            {platform_define, "^(R|1|20)", fun_stacktrace},
            warnings_as_errors
           ]}.

%% Use OTP 18+ when dialyzing rebar3
{dialyzer, [
    {warnings, [unknown]},
    {exclude_mods, [rebar_prv_alias]}
]}.

%% Profiles
{profiles, [{test, [
                   {deps, [{meck, "0.8.12"}]},
                   {erl_opts, [debug_info, nowarn_export_all]}
                   ]
            },
            {systest, [
                {erl_opts, [debug_info, nowarn_export_all]},
                {ct_opts, [{dir, "systest"}]}
            ]},

            {bootstrap, []},

            {prod, [
                {escript_incl_extra, [
                    {"relx/priv/templates/*", "_build/prod/lib/"},
                    {"rebar/priv/templates/*", "_build/prod/lib/"}
                ]},
                {erl_opts, [no_debug_info]},
                {overrides, [
                    {override, erlware_commons, [
                        {erl_opts, [{platform_define, "^[0-9]+", namespaced_types},
                                    {platform_define, "^R1[4|5]", deprecated_crypto},
                                    {platform_define, "^((1[8|9])|2)", rand_module},
                                    {platform_define, "^2", unicode_str},
                                    {platform_define, "^(R|1|20)", fun_stacktrace},
                                    no_debug_info,
                                    warnings_as_errors]},
                        {deps, []}, {plugins, []}]},
                    {add, ssl_verify_hostname, [{erl_opts, [no_debug_info]}]},
                    {add, certifi, [{erl_opts, [no_debug_info]}]},
                    {add, cf, [{erl_opts, [no_debug_info]}]},
                    {add, cth_readable, [{erl_opts, [no_debug_info]}]},
                    {add, eunit_formatters, [{erl_opts, [no_debug_info]}]},
                    {override, bbmustache, [
                        {erl_opts, [no_debug_info, {platform_define, "^[0-9]+", namespaced_types}]},
                        {deps, []}, {plugins, []}]},
                    {add, getopt, [{erl_opts, [no_debug_info]}]},
                    {add, providers, [{erl_opts, [no_debug_info]}]},
                    {add, relx, [{erl_opts, [no_debug_info]}]}]}
            ]}
           ]}.
